package parkeerPackage;

import java.util.ArrayList;
import java.util.Date;

import klantPackage.Klant;

public class ParkeerHuis {
	private int aantalPlaatsen; // aantal vrije plaatsen

	private ArrayList<ParkeerReservering> kentReservering = new ArrayList<ParkeerReservering>(); // reserveringen
	private ArrayList<ParkeerPlaats> kentParkeerPlaatsen = new ArrayList<ParkeerPlaats>();
	
	public ParkeerHuis(int aantalPlaatsen){
		this.aantalPlaatsen = aantalPlaatsen;
		for(int i = 0; i< this.aantalPlaatsen; i++){
			kentParkeerPlaatsen.add(new ParkeerPlaats(i));
		}
		
	}
	
	public ArrayList<ParkeerReservering> nieuweReservering(Klant k, Date beginDatum, Date eindDatum, ParkeerPlaats p){
		kentReservering.add(new ParkeerReservering(k, p, beginDatum, eindDatum)); // Reservering toevoegen
		
		//TODO: need fixes here...
		return kentReservering;
	}
	public ArrayList<ParkeerPlaats> alleParkeerPlaatsen(){
		return kentParkeerPlaatsen;
	}
	
	public ArrayList<ParkeerPlaats> parkeerAuto(Klant k){
		if(kentParkeerPlaatsen.size() <= aantalPlaatsen){ // Er moeten plaatsen vrij zijn
						kentParkeerPlaatsen.add(new ParkeerPlaats(k)); // Voeg parkeerplaats toe
			}
		
		return kentParkeerPlaatsen;
	}
	
	public ArrayList<ParkeerReservering> alleReserveringen(){
		return kentReservering;
	}
	
	public ArrayList<ParkeerReservering> verwijderReservering(ParkeerReservering parkRes){
		ParkeerReservering resToBeDeleted = null; // Reservering die verwijdert moet worden is standaart null
		for(ParkeerReservering pR : kentReservering){
			if(pR.equals(parkRes)){
				resToBeDeleted = parkRes; // Reservering die verwijdert moet worden is de geselecteerde reservering
			}
		}
		if(resToBeDeleted != null){
			kentReservering.remove(resToBeDeleted); // Verwijder de reservering die verwijdert moet worden
		}
		return kentReservering;
	}
	
	public ArrayList<ParkeerPlaats> maakPlaatsVrij(ParkeerPlaats pPlaats){
		ParkeerPlaats plaatsToBeDeleted = null; // Plaats die verwijdert moet worden is standaart null
		for(ParkeerPlaats pP : kentParkeerPlaatsen){
			if(pP.equals(pPlaats)){
				plaatsToBeDeleted = pPlaats; // Plaats die verwijdert moet worden is de geselecteerde plaats
			}
		}
		if(plaatsToBeDeleted != null){
			kentParkeerPlaatsen.remove(plaatsToBeDeleted); // Verwijder de plaats die verwijdert moet worden
		}
		return kentParkeerPlaatsen;
	}
	
	

}
